<?php

/**
 * descript:极验验证码
 * User: blue
 * Date: 2018/8/29 15:23
 */

namespace rlibs\plugin;
use think\facade\Env;
//引入库文件和验证文件
require_once  Env::get('root_path')."extend/gt3/lib/class.geetestlib.php";
require_once Env::get('root_path')."extend/gt3/config/config.php";
class GeeVerif
{
    /**
     * 显示极验验证码
     */
    public function showGeeVerify(){
        $GtSdk = new \GeetestLib(CAPTCHA_ID, PRIVATE_KEY);
        session_start();

        $data = array(
            "user_id" => "test", # 网站用户id
            "client_type" => "web", #web:电脑上的浏览器；h5:手机上的浏览器，包括移动应用内完全内置的web_view；native：通过原生SDK植入APP应用的方式
            "ip_address" => "127.0.0.1" # 请在此处传输用户请求验证时所携带的IP
        );

        $status = $GtSdk->pre_process($data, 1);
        $_SESSION['gtserver'] = $status;
        $_SESSION['user_id'] = $data['user_id'];
        echo $GtSdk->get_response_str();
    }

    /**
     * 校验极验验证码
     */
    public function verifyServlet(){
        session_start();
        $GtSdk = new \GeetestLib(CAPTCHA_ID, PRIVATE_KEY);

        $data = array(
            "user_id" => $_SESSION['user_id'], # 网站用户id
            "client_type" => "web", #web:电脑上的浏览器；h5:手机上的浏览器，包括移动应用内完全内置的web_view；native：通过原生SDK植入APP应用的方式
            "ip_address" => "127.0.0.1" # 请在此处传输用户请求验证时所携带的IP
        );

        if ($_SESSION['gtserver'] == 1) {   //服务器正常
            $result = $GtSdk->success_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'], $data);
            if ($result) {
                echo '{"status":"success"}';
            } else{
                echo '{"status":"fail"}';
            }
        }else{  //服务器宕机,走failback模式
            if ($GtSdk->fail_validate($_POST['geetest_challenge'],$_POST['geetest_validate'],$_POST['geetest_seccode'])) {
                echo '{"status":"success"}';
            }else{
                echo '{"status":"fail"}';
            }
        }
    }
}